Log In  
[back to top]

[ :: Read More :: ]

by zep
Cart #9972 | 2015-04-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
13


Another test -- this one's controllable with cursor keys.

P#9973 2015-04-18 20:52 ( Edited 2015-05-20 20:44)

[ :: Read More :: ]

Cart #9970 | 2015-04-19 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
33

PICO-8! This is quick test of the cart format and html5 web player.

Voxatron users: check your account page :) PICO-8 is another fantasy console being co-developed with Voxatron as an included target platform. If you try it out, you might notice that the two already share the same audio tools. I'll be folding the new music editor into Voxatron for 0.3.3 which will be available soon.

Check back to www.pico-8.com tomorrow for more info.

P#9971 2015-04-18 20:51 ( Edited 2015-05-20 01:42)

[ :: Read More :: ]

Hey All

So you may be wondering what I've been up to for the last 4 months or so, and I'll post all about that very soon! v0.3.3 has required a lot of general housekeeping work including improving the player inventory system to function nicely with world state saving, scripting and controls. As a result, it became a good opportunity to also squeeze in weapon switching and custom HUDs.

Here's the design I have -- please feel free to comment and criticize -- especially if it looks like it won't carry ideas for carts you'd like to make soonish.

Here's an example HUD that shows a single player carrying more than one weapon (switchable with Q/E or shoulder buttons):

The basic idea is to add an animation to INV_ITEM similar to the ones that exist now for arcade weapons, but to allow adding any inventory item to the hud, including things like potions that are activated with an alternative button, or temporary pickups like the score multiplier.

The items only have limited information about how they are to be displayed up top -- the layout happens mostly automatically. But certain common item meanings (score, life, player head) are tagged as such to help make a sensible layout.

The layout is performed in single player by separating elements into up to 3 groups and aligning then left, then right then center. Multiplayer layout is similar, but elements are squashed together and layed out per-player.

The goal here is to provide a simple way to make inventories for common genres, without requiring lua scripting or a lot of work doing layouts that work both in 1P & 2P. Later on, fancy HUD requirements can be taken care of in Lua scripts (more on that shortly!).

So, the steps to make a custom HUD will be:

  1. Add (or alias) any inventory items (INV ITEM) that the player should start with. // e.g. start with a bow and 8 arrows
  2. Add animations to inventory items that should be shown in the HUD
  3. Tag some inventory items as having a special meaning: score, lives

It will still be possible to use the old arcade HUD that you're all familiar with, but not to mix-and-match the two systems.

So, here's the question -- are there any simple HUDS you'd like to use that don't seem to work with a scheme like this?

Here are some examples that I think will be ok:

Doom: Score, life, current weapon & ammo
Bomberman, Bloot: Player heads with points won in a single row
RPG: armour & weapon, MP, HP, Gold
Adventure: List of collected objects
Scrolly Shooter: lives, score, panic bombs // lives logic not yet implemented

P#9880 2015-04-01 18:39 ( Edited 2015-06-06 00:43)

[ :: Read More :: ]

Cart #9261 | 2014-11-01 | Embed ▽ | No License
5

Here's a quick example of a cartridge with a title screen.

To do this, use the script called 'Switch Room' in the internal tab. It will be possible to write your own scripts in Lua later, but these scripts are placeholders for now.

  1. Open the Internal objects tab (on the right of the navigator -- it shows 'Actors' by default)

  2. Click on Internal and then open Scripts

  3. Place the 'Switch Room' script somewhere in the room, and set the trigger to SYSTEM:BUTTON:SHOOT.

  4. Set the object's parameter (just below the trigger where it says 'Script') to the number of the room you want to switch to.

Note that there's no need to have a controllable player actor from the start -- you can introduce the player after the title screen / intro or whatever.

P#9263 2014-11-01 14:27 ( Edited 2015-01-22 19:09)

[ :: Read More :: ]

Hi All

Voxatron 0.3.2 is now up on your games page or Humble download page (check the version number on the file). This is another bug fixing update, recommended in particular to Windows users as the 0.3.1 package was broken and still included 0.3.0's save game bug o( )o.

v0.3.2

Added: Monsters to default resource tree
Added: HOST:M-STATE:COLLECTED
Fixed: (Windows) save games broken
Fixed: WORLD:RANDOM not selectable trigger
Fixed: Can not deselect aliased objects by clicking
Fixed: Favourites sometimes not saved
Fixed: Custom pickup score does not respect bonus multiplier

P#9238 2014-10-28 17:15 ( Edited 2015-01-05 17:27)

[ :: Read More :: ]

Cart #9202 | 2014-10-24 | Embed ▽ | No License
7

Here's a demonstration of the new object aliasing feature in 0.3.0. Click "Play >" to try it out in the browser, or if you'd like to open it in the designer, click on "Cartridge" and save the file somewhere handy (and then CTRL-O to open it from inside Designer).

For some background on how to make custom objects in Voxatron, try the tutorial: Modifiers and Monster Attacks

So, what is object aliasing?

An alias is a reference to another object definition. It looks like a regular item in the object navigator, but all it does is point to a definition somewhere else. This is very similar to aliasing in a file system -- for example, a desktop shortcut in Windows is not the whole program, but just a link to open it.

To create an alias in Voxatron, select the item(s) to alias and press CTRL-M. ("Make alias"). This creates the alias in the paste buffer, so you can now navigate to the location you would like to paste it and press CTRL-V. You should see the little arrow icon in the top right indicating that it is an alias.

What are they good for? In Voxatron Designer, they are really useful! There are two main uses, and in this tutorial we'll be covering only the second one:

  1. If several objects share the same component, you only need to define the component once and then make aliases to refer to it from each player. I'll talk about this more later, but if you'd like to see an example, check out the COMMON folder that is used by each player definition in Bloot:
  1. For creating lists of object definitions that can be selected from randomly. The treasure box in this cart does this both for emitting random treasure and for playing a random sound each time a gold coin is collected.

Here's what the treasure box's emitter folder looks like. It has 4 references to the treasure objects:

Note that the emitter's source_id is 0. This is just a convenient shortcut to mean 'this folder'. It could have been the object id of the emitter itself and mean exactly the same thing.

So.. wait -- normally the source_id of an emitter is the object to be emitted. What happens if it's a folder?

When a folder is specified, a random item is selected from that folder each time. The probability of each item being selected can be controlled with the SELECTION PROBABILITY field that every alias has. This value represents the relative likelihood that each item will be selected. For example, if there are 2 items with probabilites 5 and 10, you'll end up with twice as many of the second item on average.

It's possible to include folders in this list of things to randomly select from. Folders also now have a SELECTION PROBABILITY for this purpose. If an empty folder is selected, then no item is returned -- so this can be used for things like monsters that only drop a single item 5% of the time (check out the blocks in Bloot). If the folder is randomly selected and it is not empty, the random selection process recurses from that folder.

Playing random sounds works in the same way. If you look inside the gold coin's folder, you'll see an additional folder of pickup sounds, and also a folder of aliases. As a shortcut, it would have been possible in this case to skip the folder of aliases and just directly refer to the folder of object definitions instead, in which case each item implicitly has a selection probability of 1.

I hope that's enough to get you started! If you have any questions about how the treasure box works, please post them in the comments. Also, feel free to use or modify the treasure box guy in your own cartridges.


** While making this, I found some bugs that will be fixed in 0.3.2:

  • There's no way to select the SYSTEM:RANDOM event for triggering the treasure box's opening state. Please use HOST:PERIODIC instead for now
  • There's no way to trigger a sound when a pickup is collected. I used life <= 0, so the pickup sound is also played when the pickups are destroyed.
  • While viewing aliases in the navigator, they can not be deselected by clicking somewhere in the window. Press Enter instead.
P#9203 2014-10-24 10:12 ( Edited 2014-10-27 04:22)

[ :: Read More :: ]

Hi All

Voxatron 0.3.1 is now up on your games page or Humble download page (check the version number on the file). This is just a quick bug-fixing update, but is highly recommended as game progress saving is broken in 0.3.0.

v0.3.1 Changelog:

Fixed: Save games / checkpoints broken when Voxatron is clean installed o_O
Fixed: Sticky joystick buttons and sticks making menu navigation impossible
Fixed: Object references break when loading .vob.png
Fixed: Able to edit internal items from toolbar object button
Fixed: SYSTEM:BUTTON doesn't work when player 1 doesn't exist
Fixed: Bullet life shown even though meaningless (use DURATION instead)
Fixed: Corrupt internal music item at end of list
Fixed: 2d png importer crashes for files larger than 128x128
Fixed: Default pickup sound plays even when default_sound flag is 0
Fixed: Pickups can not respond to life <= 0 event
Fixed: HURT event triggered when player life increases
Fixed: Monster entry stops after P1 dies in 2-player arena
Fixed: Grenades damage indestructible walls
Fixed: Placing room objects resets properties each time
Fixed: 2-way doors facing in the same direction causes crash
Fixed: Bullets hurt player even when hurt_same_team flag is 0

P#9193 2014-10-23 15:21 ( Edited 2014-10-28 16:06)

[ :: Read More :: ]

Voxatron 0.3.0 is now available! You can grab it from your games page or Humble download page. The largest changes you'll notice are a 2P arena cart, a whole new cart called Bloot (4-player!) and a sound designer that you can see a glimpse of in the trailer (it's shared with my other fantasy console, PICO-8, which is a kind of subset of Voxatron). Try Bloot to see what kind of sounds you can make with it.

On the more technical side, there is now support for aliased objects, which means you can make references to objects from different folders. This is useful for things like making shared properties between actors or dropping random loot. Tutorials on how to use this are on their way :)

If you'd like to try making a multiplayer cartridge, just plonk more than one player into a room and they will automatically be assigned controls to a human player in order (P1, P2..). Note that you'll need to set up controls in the options menu for each player, which can currently be keyboard, keyboard+mouse, and up to 4 joysticks. Note that each player needs to have a separate definition (you can't currently two DJ Beeps for example).

Finally, as some of you have discovered already, it is now possible to freely play any BBS cart right in your browser. This means that cart designers can share their games with people who don't own Voxatron, and gives a handy way to preview carts without leaving the forum. I'm hoping that this will encourage users to post and share more stuff, and will serve as a way to introduce more people to Voxatron.

Check out the Development Map to see how all these features are going to fit together. Coming up next is switchable inventory items, making RPGs and Doom-style inventories possible.

If you find any bugs, feel free to post them in the comments. I saw the save game issue and the sticky 'up' button bug preventing menu use (ugh), and will make another small update soon to address these.

Thanks for playing, and I'll catch you in the forums!

  • zep

Update: I uploaded some fixed .deb installers for Linux that are also live on Humble for anyone who had trouble with this.

Update 2: There's a nasty bug that prevents saving if you clean installed Voxatron. I'll patch it soon, but until then here's a workaround.

v0.3 changes:

Added: Multiplayer
Added: Pico-8 sound editor
Added: Item aliasing
Added: Random alias selection (for loot dropping etc.)
Added: Low camera angle
Added: M-STATE:C-CRASH event caused by actors colliding at high speed
Added: Bullet flag collide_with_sender
Added: 2d png importer
Changed: Debris and snow no longer settles underneath actors
Changed: Friction applies to objects bouncing in z
Fixed: Tiling actors in editor use incorrect spacing
Fixed: Life less than zero trigger not activating before actor does not exist
Fixed: Actors with negatiec gravity do not lift off the ground
Fixed: Item id corruption after pasting from another file
Fixed: Cart profile saving (favourites, game_in_progress)

P#9114 2014-10-16 15:01 ( Edited 2014-12-05 15:39)

[ :: Read More :: ]

Nothing to see here

P#9077 2014-09-28 09:19 ( Edited 2014-09-28 16:22)

[ :: Read More :: ]

Hey All

Just a quick demo of fancy doors and room goals.
Note that you need to collect the gold key to allow the gold door to open.

Cart #8998 | 2014-08-14 | Embed ▽ | No License
5

You can take preview images like the one shown here in-game using F7

P#8999 2014-08-14 19:11 ( Edited 2014-11-17 10:02)

[ :: Read More :: ]

Hey All

Voxatron 0.2.13 builds are now up, and will shortly be up on Humble Store (check the version number in the filename). If you don't have a lexaloffle account (Games > My Games) and would like one, you can activate it from your humble store page (see this thread). To update from a Humble Store account, search your email for the download page link, or request a new one here.

The main two changes in 0.2.13 are much more flexible player control options, and moving to SDL2.

Player Controls

The default player control style is now analogue, which means that you can run and shoot in any direction! This will eventually be an optional property of players, but for now I decided it doesn't badly break the design of any existing cartridges so set it as default. This means the mouse control style can be more natural -- using ASDW + the cursor as an absolute point to shoot at.

Many users asked for this early on, but I stubbornly held out with a more minimal 8-way control set, wanting to keep the controls across games more simple, genre-agnostic, retro-feeling and unified. I was really, really wrong about that! -- it doesn't hurt to have analogue control in the vast majority of cases (even though existing carts weren't design for it), and it of course makes hardcore arena shooting much more fun.

It's also possible to assign buttons to various actions in the player designer, but more on that soon. (For a preview, check out the list of button actions in the player controls setup menu).

SDL2

SDL is the core library that Voxatron uses to do operating system-level things like window management and to talk to hardware (controllers, sound and video). SDL2 provides better controller configuration, multi-monitor support and doesn't crash on startup under recent versions of OSX (!) It also means I've had to change quite a lot of historically stable code, so there might be a few small glitches in this department for the next couple of updates.

SDL2 has quite a nice controller configuration scheme, where many common controller layouts are automatically detected on startup and a best guess at the layout is made from a database supplied from other users (including a large number of Steam users). It's possible to add extra controllers or alternative mappings using the standard SDL2 layout syntax by adding a line sdl_controllers.txt (see vox.txt for details), rather than using the in-game config in earlier versions. This might cause some disruption for a few users, but should make controller setup much easier and more consistent in the long run.

** Linux users: The linux installer doesn't give you SDL2 automatically, so please either manually install SDL2 (http://www.libsdl.org) or wait for a follow-up update next week that will hopefully fix this.

Updated (but still very wip) manual:
https://lexaloffle.com/files/docs/voxatron_manual_213.html

Changes:

v0.2.13

Added: Analogue player movement and facing control
Added: Custom control mappings per player
Added: Inventory items assigned a useage button
Added: Transparent voxel rendering in Designer
Added: Cartridge metadata section with 2d 60x32 label
Added: Capture cartridge preview image in-game (F7)
Added: default_sounds flag for actors
Added: car-style control (turn left, right, accelerate)
Added: Low air friction flag in actor properties (on by default)
Changed: Moved to SDL2: better multiple monitor support, controller support and fixes OSX startup crash
Changed: Game controllers now customisable sdl's scheme (~/.lexaloffle/Voxatron/sdl_controllers.txt)
Changed: Control configuration format and default config values // camera is now O, P
Changed: Any actor now has low air friction after being thrown
Changed: Mouse control now uses absolute cursor position to determine player facing
Changed: Players have warp-in flag
Changed: Better 2d drawing for depth==1 props
Fixed: Duplicate object instance ids when dragging to draw multiple objects or stamping
Fixed: Internal pickup friction and mass
Fixed: Loading and saving a cartridge clobbers existing preview image
Fixed: Throwing using directional controls
Fixed: Import .xm file now fails gracefully for unsupported files (> 128k or > 8 channels)
Fixed: Jumping twice quickly causing annoying jump sound retrigger
Fixed: Actors not observing warp-in property at t=0
Fixed: Legacy default player starting position sometimes not at center of room

P#8996 2014-08-14 18:59 ( Edited 2014-10-04 16:57)

[ :: Read More :: ]

Hey All

Voxatron 0.2.12 builds are now up, and will shortly be up on Humble Store (check the version number in the filename). If you don't have a lexaloffle account (Games > My Games) and would like one, you can activate it from your humble store page (see this thread). To update from a Humble Store account, search your email for the download page link, or request a new one here.

Another update for folks designing stuff.. doors, Designer performance, .qb file importing, object instance browsing and title screen support. As usual earlier carts should still function roughly the same, but let me know if you notice any breakage. If there aren't any show-stopping bugs, I'm going to work on getting the manual up to date and posting some tutorials, but for now here's a quick intro to new features..

Doors

Doors have been simplified somewhat in 0.2.12. There is now a single property (length) that indicates how far you can walk into the pocket, and from which the old separate properties exit_depth, entry_depth and hide_depth are all inferred. It's also much easier to link 2-way doors, as you get a nice big 'Link' button every time a door is placed and there was a previously unlinked door selected. You can still manually edit the target_location.

More door improvements: green-checkpointed rooms send the player back to a sensible position (even for door pickups that you jumped on top of), it's possible to stop the player loitering in doorways with the auto-trundle property, and it's possible to check if a door has a player standing inside it with actor:m-state:occupied (useful for doors that spit a player out and then self-close until the room is completed).

Object Instance Browser

I've added the first version of the room instance browser. It's not very useful so far, but can be handy for locating objects that are not visible and difficult to pick out of the timeline. I will gradually extend the browser to include filters (view only monsters / search etc), and to organise groups that can be locked/hidden and have their own timelines and activation conditions. This means we'll eventually get functionality similar to layers (that you might find in a painting program), a scene hierarchy, and multiple timelines.

Optimisations

I discovered a ridiculous speed bottleneck that was slowing the Designer down for complex scenes, that I really should have checked earlier! You'll find that rooms with more than a few hundred objects will run much much smoother than before (typically 2x ~ 3x faster on my MacBook). I also found a similar bottleneck that was causing a bit of slowdown during gameplay when there were large, dense explosions.

.qb importing

The 'Load item into folder' button can now handle Qubicle Constructor (.qb) files. The colours are mapped onto Voxatron's palette, and all sub-objects are merged into a single prop.

Title Screens

It's now possible to make proper title screens (no more hiding the player in a large box!). Instead of placing a player in the first room, place a SWITCH_ROOM script (you can find it in Internal > Scripts) with a trigger of SYSTEM:BUTTON:SHOOT. The script takes a single parameter which is the desired starting room number. Note that you only need to place the player object once in the first room you want them to appear. It's also possible to switch rooms, leaving the player behind until switching back again.

v0.2.12

Added: Door linking button
Added: Object instance browser
Added: Internal scripts: DUMMY, SWITCH_ROOM
Added: Microscript event: system:button
Added: Microscript m-state: occupied (for doors)
Added: Door flag: auto-trundle
Added: Script instance property: execute once / times many
Added: Preserve relative position of player to door
Added: Qubicle constructor scene importer (.qb)
Added: Timeline instance thumbnails for custom objects
Added: Animation flag: animate only when host actor standing on ground
Added: Actor flag: collide_with_bullets
Removed: Immediate doors
Changed: Tweaked default object library, added tiny font
Changed: Simplified pocket doors. // exit / entry / hide depth are implicit
Changed: Loading screen rendered in voxel display
Changed: Green checkpoint saves player at door threshold
Changed: Room goals can only be cleared if player is still alive
Changed: Animate by actor movement takes "play speed" and observes dz
Optimised: Designer runs 2x~3x faster for complex scenes
Optimised: Emitting many particles
Fixed: Door entry depth
Fixed: Sometimes player actor set to last used door position when loading
Fixed: Wandering actors sometimes don't respond to collision events
Fixed: Dragon attack damage 0
Fixed: Actors that are not pushable or standable can not trigger collision events
Fixed: World animations not observing animate by movement mode
Fixed: Actors spawning into walls when using CLOSE / FAR / RANDOM spawn position
Fixed: Player re-spawning after cart is completed

P#8845 2014-05-29 19:02 ( Edited 2014-07-16 21:26)

[ :: Read More :: ]

Here's a WIP preview of labels designed for Voxatron 0.3.* releases. They will be mostly brushed up existing cartridges (e.g. Twisty Castle will be extended and given a 2P option), but there are a couple of news ones too. I'll let you guess what they are for now :)

Also just a heads up for designers, it looks like 0.2.12, which irons out doors, title screens, and many little engine details, will be ready at the end of this week.

Catch you soon!

  • z
P#8836 2014-05-26 19:27 ( Edited 2015-01-21 03:23)

[ :: Read More :: ]

Hey All

Voxatron 0.2.11 builds are now up, and will shortly be up on Humble Store (check the version number in the filename). If you don't have a lexaloffle account (Games > My Games) and would like one, you can activate it from your humble store page (see this thread). To update from a Humble Store account, search your email for the download page link, or request a new one here.

v0.2.11 is mostly a bug-fixing update, but it does include one new type of object: fonts.
To use a font for drawing into a prop, make sure it is the only one selected as 'default font' (I'll make that easier later!), and then while editing the prop, open the console (escape) and type @Something. The text will be drawn in the currently selected colour.

Note that it's case sensitive, and the default font included only contains capital letters. To make your own font or extend the default one, just add the characters in any order and name them as themselves.

A couple of things I've bumped to 0.2.12 to get this update out earlier are the music importing bugs and also importing Qubicle .qb models. But next up is better documentation and some more tutorial carts!

Changes in v0.2.11:

Added: Fonts
Added: Collide events for particular sides
Fixed: Draw text command
Fixed: Shoot button triggered by movement button events
Fixed: Missing voxel cursor
Fixed: Actors can fall through thin pieces of floor
Fixed: Rotated non-square actors get stuck / climb walls
Fixed: +1 Life logic
Fixed: Sword base weapon starts as peagun for single shot
Fixed: Microscript DEF_ID, OBJ_ID selectors
Fixed: Paste into current item crashes
Fixed: Crash when saving world state
Fixed: Can draw boxes in title screen with mouse
Fixed: Freeze pickup destroys falling debris
Fixed: Bullet leaving debris incorrectly
Fixed: Crash for short rooms
Fixed: Invalid extend_walls value handled robustly
Fixed: LERP over 0 seconds crash
Fixed: help tip drawn over top of checkboxes

P#8721 2014-04-19 16:34 ( Edited 2014-05-03 21:17)

[ :: Read More :: ]

From 0.2.10, it's now possible to import .xm module files and embed them in your cartridges.

If you'd like to try making some .xm music, I highly recommend Milky Tracker.

To get started, here's an example .xm file (feel free to use it in your levels too):

https://www.lexaloffle.com/bbs/files/1/dirtbag_ingame.xm

To import:


In the objects tab, click the "Load Item Into Folder" button.
Navigate to the folder you stored the xm and double click it.
You should see the music item appear in the current folder.

To add music to a room:


Edit the room you want
Click once on the music item to select
It should now appear in the pull-down list "MUS"

Press SPACE to stop playing the music in the editor

Know issues:


The .xm player can't handle everything yet! Some of the effects/commands are missing, and it can only load 16-bit instrument samples.

P#8579 2014-03-25 17:48 ( Edited 2015-07-11 00:34)

[ :: Read More :: ]

Hey All

Voxatron 0.2.10 builds are now up, and will shortly be up on Humble Store (check the version number in the filename). If you don't have a lexaloffle account (Games > My Games) and would like one, you can activate it from your humble store page (see this thread). To update from a Humble Store account, search your email for the download page link, or request a new one here.

NOTE: 0.2.10 can not read old player history files. If you're in the middle of a long level, you might want to finish it before updating

0.2.10 contains many new engine features that will be of interest to users making carts: microscripting, persistent worlds, player and weapon editing, music importing, many new actor properties, nice doors. There's new stuff to play too! I've added a cartridge selection menu with a new arena (Chaos Arena) and some test carts to fool around in.


If you take a look at the editor, you'll see there are now some new default objects in the 2nd and 3rd tabs. These are all made from scratch in the editor, and can be used as templates to make new monsters (or just examples to learn from). The 4th and 5th tabs are still read-only internal objects that can be mixed with new stuff, but eventually I will try to remove all of the legacy items. In particular, there should no longer be any need to use the old door scheme.

There are surely many small glitches and details I still need to attend to, but it should be mostly stable and functioning. I'll be posting new tutorials over the next couple of weeks, but in the meantime have a look at the new example objects, and here's a half-finished user manual:

voxatron_manual_0

UPDATE:
How to add music: https://www.lexaloffle.com/bbs/?tid=1580
How to use doors: https://www.lexaloffle.com/bbs/?tid=1579

Changelog:

v0.2.10

Added: Custom players
Added: Chaos arena (alpha demo cart)
Added: Custom doors and spawn points
Added: Custom bullet properties and crater sizes
Added: World permanence system // elephant mode / collect_once
Added: Green checkpoint flags (save when exiting room)
Added: Room objectives / room clearing
Added: Extended microscripting and inter-room superstates
Added: Actor property value mini-functions
Added: Base types: shape, colour
Added: Modifiable room height (maximum 64)
Added: Room properties: liquid_z, extend_walls, skip_timeline
Added: Motion blur for fast moving actors
Added: Actor properties: friction, bounce, density, attack damage
Added: Actor facing quantization
Added: Cart selection for alpha demo levels
Added: Transparent colours
Added: Maximum player life pickups
Added: Save point pickups
Added: Default objects and templates
Added: Music importer (.xm)
Added: Audio triggers
Changed: Collision events can optionally apply to walls/actors/any
Changed: Microscripting statements replace old object instance triggers
Changed: Removed minimim 4x4x4 size limitation on props
Changed: New savegame storage (historic saves invalidated - sorry!)
Optimized: File saving and resulting png size
Optimized: Editor rendering, gui responsivity
Fixed: Floating ground caused by destructive weapons
Fixed: Team logic for bullet collisions
Fixed: Pasting objects from another file yields duplicate ids
Fixed: Sound mixer thread crashes
Fixed: BBS level title clobbering

P#8537 2014-03-23 20:16 ( Edited 2014-05-19 16:38)

[ :: Read More :: ]

Disclaimer: this feature is still in R&D, highly experimental and might not make it into the alpha anytime soon. But for your viewing pleasure, here's what Voxatron looks like with a volumetric light attached to the player. I really want a scene in the main story cart (1.0) that has the main character walking through a forest at night with a lantern, with snow catching the light as it falls into view. I tried making a quick mock-up using a brute-force method and it turned out to be fast enough to be interactive, but not yet useable.



Technical explanation:
This new lighting model is made possible by the way I'm calculating shadows. Instead of generating a traditional 2D shadow map, I instead generate a 3D 1-bit volume, where each set bit represents a fully lit voxel. The volume is then sampled while drawing voxels to give soft shadows. To do rough attenuation using 1-bit values, I dither the maximum light distance based on xyz (and t for flickery torch-style light), and then let the sampling take care of producing a smoother version. I still kind of like the 1-bit version though for large simple geometric shapes.

The beauty of this method is that the light volume can be generated in any fashion and still rendered at the same speed. It's possible, for example, to blit many blobs of light into the map (e.g. for bullets or explosion particles) with hardly any additional cost. To do light emitted from a point and casting shadows, I'm currently doing a line-of-sight march for every voxel. It was faster than I expected (I was only trying to generate some still frames to look at!), but I have a much more efficient method in mind for this, which I'll post about later if it works out (or not).

P#8428 2014-02-05 15:15 ( Edited 2014-12-18 09:55)

[ :: Read More :: ]

Here's an idea I'm playing with for 0.3..

One of the concepts I want to communicate is that the Voxatron Designer is for making whole games (or animations / shows / demos / playgrounds / music disks ), and not just Voxatron levels with a robot who goes around shooting monsters up. Also, I want to give people making carts the feeling that they've made something that has its own separate identity as a creation that can be shared. To do this, I'm playing with the idea of presenting Voxatron as a kind of virtual console (following more closely the pico-8 philosophy, which was supposed to be a mini 2d voxatron in the first place!).

This means that when you're browsing BBS levels, each one would be shown explicitly as a cartridge. The current BBS levels browser already kind of hints at this, but I think it could be interesting to go the whole hog:

Each cartridge has a 60x32 image that can optionally be drawn by the cart's designer, along with a choice of cartridge colour. I'd have to figure out a nice way of showing the titles on the top for easier browsing.

What do you think? Do you like the current minimal menus, or would you like to see Voxatron as a clunky pseudo-retro machine?

P#7992 2013-12-04 14:56 ( Edited 2013-12-04 19:56)

[ :: Read More :: ]

0.3 is a special number to me; it's the version of Voxatron that I internally take to mean 'Voxatron is now also a platform'. The aim of 0.3 is to round off a complimentary set of tools and engine features for making levels and whole games that don't resemble Voxatron beyond utilizing Voxatron's virtual display format. The machinery to do this covers around half of the project. Crafty users have already made some wonderfully surprising levels, but I think the difference will be 'How shall I make this in Voxatron?' rather than 'What could I make in Voxatron?'.

With 0.2.10 taking shape, and destined to serve as a kind of beta for alpha 0.3 (does that make sense?) I thought it might be a good time to give you a look slightly further into the future. And also wave my hands around one more time before you can actually try 0.3 firsthand and try to convince fleeting blog-readers how cool it will be.

v0.3 Features


This trailer demonstrates some of the upcoming features using no special hackery for the park scene. The leaves are emitted monsters that wander while they're not standing, the duck leans against the top-hat guy when close using an object-specific trigger, the hud is turned off, and solid animations are used to allow the girl to be animated but still able to be walked over with per-voxel collisions.

The following features are already working in my dev builds, and will appear in 0.3. For the next month or two, I'll be carefully attending to details; freezing the design of each behaviour so that I don't break backwards compatibility, debugging, writing user manual entries, and resolving any left-over design confusion (my confusion, that is) about how exactly features should work. I've learnt from doing quick design to release cycles that this can yield a long tail of around 10x as much maintenance in bug-fixes and work-arounds once they are live (blue doors, or NOITEM triggers, anyone?), so in that respect I fear I'm sitting on a potential wagon of long-fuse dynamite.

To alleviate this, I will be rolling out features as gradually as I can in the remaining 0.2. updates, but it might be a bumpy ride. I should take this chance to quickly thank everyone in advance and who has already been posting levels for being so tolerant while I flounder around fixing and re-breaking their levels. Making something like the Voxatron editor has been a personal dream of mine, and I can't understate how vital tenacious and creative users have been to help make it happen. You guys rock. sniff*

Right. So, the core 0.3 features are:

1. Microscripting: Activation controllers can query any actor or group of actors in the world, and perform logical expressions over them as a collection (e.g. If any actor in group x has a distance closer than y to this actor..). Expressions can also query the state of objects in other rooms -- for example, you can check to see if a boss monster has been killed in one room to trigger opening a door in another room.

2. World Persistence: Rooms can optionally be recorded/saved in exactly the way they were left including wall damage and actor position and states. Otherwise, it is possible to turn existence persistence on per-object, so that a monster only spawns once or a pickup is only collected once.

3. Doors: Doors are defined in a way similar to actors, with their own animations (that can be solid) and triggerable modifiers. You can, for example, make a door that has an opening animation if a player is weilding a key close to it. Doors also have off-screen pockets of empty space for much nicer room transitions. Finally, they can be used to spawn players after the room has started, or to remove them from play -- useful for making story screens and showing action before the player arrives on the scene.

4. Custom Audio: Music can be imported and saved with the level file (.xm tracker modules), and sounds can be triggered by activation controllers. I'll make a synth designer later, but in 0.3 there will be a standard library of sounds to choose from.

5. Player Inventories: Pickups can optionally include an INVENTORY_ITEM definition that controls how players can collect and store them, how much ammo they have, how they are displayed, and how they interact with other pickups. For example, it's possible to rig arcade-style weapons or to make an rpg-style inventory where the player can select between collected items and wield them at will.

6. More Physics: 0.3 will handle actors' physical properties better, including their weight on collisions, how bouncy they are, and with definable friction. This is the last time I'll change the core physics, but in any case older levels should still work roughly the same (unless you have the player hoisting incredibly large objects).

7. Custom Players: players can be defined in a way similar to monsters. Old arcade pickups can still be used with special legacy options, or you can define custom attacks from scratch as part of the definition (triggered by inventory items).

8. Multiplayer!: Multiple active players can be present in the same room, and enter neighbouring rooms either when one players goes through a door, or when all players are close to or inside a door. Using a team grouping system, players can either hurt each other, be pushed around by each other's bullets, or not interact at all.

Wishlist


There are a bunch of things that would be nice for 0.3, but it's important to keep it as focused as possible. For example, there should eventually be tools for managing room objects, for generating bits of the world procedurally to make rogue-like-likes, or for making speech bubbles easily. These are all things that can be rolled out separately in later updates without impacting the design of core features.

However! If anyone's working on a level that really needs a particular little engine design tweak, feel free to suggest them for consideration. I can't promise anything for 0.3, but might be able to do them in a 0.3.* update or adjust the existing features to handle a work-around.

Release Plans


I don't have a date fixed for 0.3 yet, but anyone keen to sink their teeth into the new design tools will be able to access most of the features in 0.2.10 (the next update, coming soonish..). I'm hoping (nudge nudge*) to give users a chance to design some more stuff before 0.3 so that it's already available for the launch. Of course, I'll also be making a new demo level of my own with the hope that some players will come for the game, but then stay for the engine and tools.

You may have noticed that the BBS has been somewhat quiet, which has a few upsides (it's very tricky to support a constant stream of legacy levels!), but of course it would be great to address this, and 0.3 will be a good point to start investing more time into promoting the game and community. In fact, this was one motivation for making the trailer above -- I've set up a good toolchain for making silly trailers to keep players and potential players in the loop. Along the same lines, I'll also get the basic community tools finished before 0.3 (level ratings, playlists, competitive scores).

Ah.. what about the game?


Some of you might be here for the Robotron arcade mode or adventure mode, and wonder why I'm always going on about the engine and tools. I have been continuing work on the main story, but I'm not ready to reveal much about it until closer to 1.0. New arcade modes will be available much sooner than that however, with a new arena also coming in 0.3, and later 0.5 will be focused on developing the arcade experience (0.4 is for scripting).

That's all for now -- please feel free to offer any thoughts on 0.3 development direction or what you'd like to see happen with the release and I'll catch you on the flipside.

P#7893 2013-10-31 19:05 ( Edited 2013-12-17 14:27)

[ :: Read More :: ]

Hey all

I'm currently working on Voxatron 0.2.10 which will serve as a kind of beta for v0.3, introducing custom players and various supporting functionality. This will bring the engine quite close to being feature-complete minus lua scripting. I've been mainly occupied by engine / voxde stuff for around 2 years now, so this is a very exciting prospect!

I was hoping to do a more intermediate update, but it looks like this is going to be an all or nothing situation and I've decided to make the jump and cram everything needed in there. So while I get this together, let me give you a quick preview in case it changes your approach to any work-in-progress levels.

Custom Players and Weapons


Apart from finally being able to define custom-sized players, you'll also be able to add emitters, animations and modifier control similar to monster definitions. Modifiers can be activated by legacy conditions (shooting-left) or by buttons (host.button.shoot). To support this, there will also be some provisional way to collect pickups in an inventory that can activate modifiers that express the pickup. For example, collecting a 'blobgun' pickup might auto-wield and replace a 'fireaxe' because they are in the same wield-group, making it an arcade-style pickup. (Later it will be possible to collect multiple weapons and choose between then rpg-style).

Custom Doors


Instead of placing separate door items and props, doors will be definable as a single package of components similar to monster definitions. The components can also be triggered by modifiers as usual. For example, a door might open automatically when a player is close, activating a different door animation and mode of interaction. They also have custom hitbox attributes the same way as regular actors, so it's possible to make a very long invisible door that covers a wide exit area.

An extra non-vital feature I quite like is that it's also possible to define door 'depth' -- the size of a pocket of abstract space the player disappears into before entering the next room. This will be useful later for multiplayer levels where all players must enter the pocket to enter the neighbouring room.

State Saving


Custom players and doors add extra data that must be saved to disk, so it's also a good time to finish of the world permanence system. 0.2.10 will allow 2 ways to save room states: either the whole room is in 'elephant mode', where every detail is remembered (including holes in walls and monster health and positions etc), or each separate object can be marked as 'die once' and/or 'collect once'. In combination with the new doors, it should be possible to replace all of the bollocks 'blue door', and 'use once' malarkey from earlier versions.

Audio Triggers


The last piece of functionality that I think is holding monsters back is the ability to customize sound for their behaviours. I won't attempt to add a whole synth designer in this update (that will come later), but I've added the ability to at least select sounds from the built-in library and trigger them (or music) along with a modifier.

Custom HUD


This isn't really vital to get 0.2.10 going, but it's nice to be able to change or turn the inventory off. Especially if you'd like to do a story scene or an adventure-based level where the focus is on exploration and item discovery rather than scores or weapons.

P#7861 2013-10-03 18:38 ( Edited 2013-10-15 12:51)

View Older Posts